﻿namespace HanoiTower
{
    internal class Program
    {
        /// <summary>
        /// HanoiTower
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            Console.WriteLine("请输入一个正整数");
            int n = Convert.ToInt32(Console.ReadLine());
            Move(n, 'A', 'C', 'B');
            Console.ReadKey();

        }
        /// <summary>
        /// 移动圆盘
        /// </summary>
        /// <param name="n">圆盘个数</param>
        /// <param name="start">开始柱</param>
        /// <param name="middle">中间柱</param>
        /// <param name="end">目标柱</param>
        private static void Move(int n, char start, char middle, char end)
        {
            //如果只有一个圆盘，直接将圆盘从开始柱移动到目标柱
            if (n == 1)
            {
                Console.WriteLine($"移动{n}号圆盘 {start}->{end}");
            }
            else
            {   //将除最后一个圆盘以外的其余圆盘从开始柱移动到中间柱
                Move(n - 1, start, end, middle);
                //将最后一个圆盘移动到目标柱
                Console.WriteLine($"移动{n}号圆盘 {start}->{end}");
                //将中间柱的n-1个圆盘移动到目标柱
                Move(n - 1, middle, start, end);

            }
        }

    }
}